package dao;

import classes.AkcijskiArtikal;


import java.sql.*;
import java.util.ArrayList;
import java.util.List;

public class AkcijskiArtikalDAO	{
	@SuppressWarnings("unused")
	private final Connection c;
	private final PreparedStatement qSelect, qInsert, qSelectAll, qDelete;
	
	public AkcijskiArtikalDAO(Connection c) throws Exception {
		this.c = c;
		
		qInsert= c.prepareStatement("INSERT INTO akcijskiartikli(idAkcijskiArtikli, novaCijena, Akcija_idAkcija, Artikal_idArtikal) VALUES(null, ?,?,?)");
		qSelect= c.prepareStatement("SELECT novaCijena FROM akcijskiartikli WHERE  idAkcijskiArtikli= ?");
		qSelectAll = c.prepareStatement("SELECT * FROM akcijskiartikli");
		qDelete = c.prepareStatement("DELETE FROM akcijskiartikli WHERE idAkcijskiArtikli=?");
	}

	public int insertArtikalAkcija(AkcijskiArtikal a) throws Exception {
		if (a==null)
			throw new Exception("Nije moguce dodati nepostojeci artikal na akciju!");
        
		qInsert.setFloat(1, a.getNovaCijena());
		qInsert.setInt(2, a.getAkcija_idAkcija());
		qInsert.setInt(3, a.getIdAkcijskiArtikli());
		
		try{
			int rezultat= qInsert.executeUpdate();
			return rezultat;
		}
		catch(Exception ex){
			throw new Exception("Greska kod dodavanja artikla!");
		}
	}
	
	public boolean insertArtikalAkcijaTrue(float ncijena, int akcija, int artikal) throws Exception {
		qInsert.setFloat(1, ncijena);
		qInsert.setInt(2, akcija);
		qInsert.setInt(3, artikal);
		try{
			int r= qInsert.executeUpdate();
			if (r==1)
				return true;
			else 
				return false;
		}
		catch(Exception ex){
			throw new Exception("Greska kod dodavanja artikal an akciju!");
		}
		
	}
	
	public List<AkcijskiArtikal> selectSviAkcijskiArtikli() throws Exception{
		ResultSet rs = qSelectAll.executeQuery();
		List<AkcijskiArtikal> artikli = new ArrayList<AkcijskiArtikal>();
		while (rs.next()){
			AkcijskiArtikal a= new AkcijskiArtikal();
			
			a.setIdAkcijskiArtikli(rs.getInt("idAkcijskiArtikli"));
			a.setNovaCijena(rs.getFloat("novaCijena"));
			a.setAkcija_idAkcija(rs.getInt("Akcija_idAkcija"));
			a.setArtikal_idArtikal(rs.getInt("Artikal_idArtikal"));
			
			artikli.add(a);
		}
		return artikli;
	}
	
	public float dajAkcijskuCijenu(int id) throws Exception{
		try{
			qSelect.setInt(1, id);
			ResultSet rs=qSelect.executeQuery();
			float cijena=0;;
			
			if(rs.next()){
				cijena=rs.getFloat("cijena");
			}
			return cijena;
		}
		catch(Exception e){
			throw new Exception("Greska kod povrata cijene!");
		}
	}


	public int deleteAkcijskiArtikal(int id) throws Exception {
		qDelete.setInt(1, id);
		return qDelete.executeUpdate();
	}

}
